Git Hooks என்றால் என்ன?
Git hooks என்பது குறிப்பிட்ட Git நிகழ்வுகள் நடக்கும் போது தானாக இயங்கும் ஸ்கிரிப்ட்கள் ஆகும், கமிட் செய்தல் அல்லது குறியீட்டை push செய்தல் போன்றவை.
ஏன் Hooks பயன்படுத்த வேண்டும்?
Hooks மீண்டும் மீண்டும் செய்யும் பணிகளை தானியங்கி செய்யவும், கோடிங் தரங்களை செயல்படுத்தவும், பிரச்சனைகளை விரைவில் கண்டறியவும் உதவுகின்றன.
சோதனைகளை இயக்கவும்
ஒவ்வொரு கமிட் அல்லது push-க்கு முன் சோதனைகளை இயக்கவும்
குறியீட்டு பாணியை சரிபார்க்கவும்
குறியீட்டு பாணியை தானாகவே சரிபார்க்கவும்
மோசமான கமிட் செய்திகளைத் தடுக்கவும்
பொருத்தமற்ற கமிட் செய்திகளைத் தடுக்கவும்
அனைவருக்கும் விதிகளை செயல்படுத்தவும்
உங்கள் குழுவில் உள்ள அனைவருக்கும் விதிகளை செயல்படுத்தவும்
Hooks எங்கு உள்ளன?
Hooks உங்கள் களஞ்சியத்திற்குள் .git/hooks இல் சேமிக்கப்பட்டுள்ளன.
இயல்பாக, .sample என்று முடியும் மாதிரி ஸ்கிரிப்ட்களை நீங்கள் காண்பீர்கள்.
எடுத்துக்காட்டு: கிடைக்கக்கூடிய Hooks-ஐ பட்டியலிடவும்
ls .git/hooks
ஒரு Hook-ஐ எவ்வாறு இயக்குவது
ஒரு hook-ஐ இயக்க, .sample நீட்டிப்பை அகற்றி ஸ்கிரிப்டை இயக்கக்கூடியதாக ஆக்கவும்.
எடுத்துக்காட்டாக, pre-commit-ஐ இயக்க:
எடுத்துக்காட்டு: pre-commit Hook-ஐ இயக்கவும் (Linux/macOS)
mv .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Windows-ல், கோப்பை pre-commit என மறுபெயரிட்டு, அது உங்கள் ஷெல் மூலம் இயக்கப்பட முடியும் என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் (தேவைப்பட்டால் .bat அல்லது .ps1 பயன்படுத்தவும்).
Hooks-ன் வகைகள்
பல வகையான hooks உள்ளன, ஆனால் மிகவும் பொதுவானவை:
- pre-commit - கமிட் செய்வதற்கு முன்
- commit-msg - கமிட் செய்தியை சரிபார்க்கும் போது
- pre-push - Push செய்வதற்கு முன்
- pre-receive - சேவையகத்தில் பெறுவதற்கு முன்
- post-receive - சேவையகத்தில் பெற்ற பிறகு
pre-commit Hook
pre-commit hook நீங்கள் ஒரு கமிட் செய்வதற்கு முன் இயங்கும்.
குறியீட்டு பாணியை சரிபார்க்க, சோதனைகளை இயக்க, அல்லது ஏதாவது தவறாக இருந்தால் ஒரு கமிட்டை நிறுத்த இதைப் பயன்படுத்தலாம்.
எடுத்துக்காட்டு: எளிய pre-commit Hook
#!/bin/sh
# Stop commit if any .js file has "console.log"
grep -r 'console.log' *.js && {
echo "Remove console.log before committing!"
exit 1
}
commit-msg Hook
commit-msg hook கமிட் செய்தியை சரிபார்க்கிறது அல்லது திருத்துகிறது.
எடுத்துக்காட்டாக, இது டிக்கெட் எண் இல்லாமல் கமிட்டுகளைத் தடுக்க முடியும்.
எடுத்துக்காட்டு: commit-msg Hook
#!/bin/sh
# Block commit if message does not contain a ticket number
if ! grep -qE 'JIRA-[0-9]+' "$1"; then
echo "Commit message must have a ticket number (e.g. JIRA-123)"
exit 1
fi
pre-push Hook
pre-push hook நீங்கள் குறியீட்டை ஒரு தொலைதூரத்திற்கு push செய்வதற்கு முன் இயங்கும்.
குறியீட்டைப் பகிர்வதற்கு முன் சோதனைகள் அல்லது சரிபார்ப்புகளை இயக்க இதைப் பயன்படுத்தலாம்.
எடுத்துக்காட்டு: pre-push Hook
#!/bin/sh
npm test || exit 1
சேவையக-பக்க Hooks
சில hooks (pre-receive போன்றவை) Git சேவையகத்தில் இயங்கும், உங்கள் கணினியில் அல்ல.
களஞ்சியத்திற்கு push செய்யும் அனைவருக்கும் இவை விதிகளை செயல்படுத்த முடியும்.
எடுத்துக்காட்டு: pre-receive Hook
#!/bin/sh
# Block pushes to main branch
grep refs/heads/main || exit 1
தனிப்பயன் Hooks
எந்தவொரு தனிப்பயன் ஸ்கிரிப்டையும் ஒரு hook ஆக எழுதலாம்.
அதை .git/hooks இல் வைத்து இயக்கக்கூடியதாக ஆக்கவும்.
எடுத்துக்காட்டு: தனிப்பயன் Hook
#!/bin/sh
echo "Hello from my custom hook!"
பிழைத்திருத்தம் மற்றும் சிறந்த நடைமுறைகள்
இயக்கக்கூடிய ஸ்கிரிப்ட்
உங்கள் hook ஸ்கிரிப்ட் இயக்கக்கூடியது என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள் (chmod +x scriptname)
பிழைத்திருத்தம்
உங்கள் ஸ்கிரிப்ட் என்ன செய்கிறது என்பதைக் காண echo அறிக்கைகளைச் சேர்க்கவும்
வெளியேறும் குறியீடு
வெளியேறும் குறியீட்டைச் சரிபார்க்கவும்: exit 0 வெற்றி, exit 1 தோல்வி
Windows ஆதரவு
Windows-ல், தேவைப்பட்டால் .bat அல்லது .ps1 ஸ்கிரிப்ட்களைப் பயன்படுத்தவும்
Jassif Team சிறந்த நடைமுறைகள்
எளிமையாகவும் வேகமாகவும் வைக்கவும்: hooks எளிமையாகவும் வேகமாகவும் வைக்கவும் - மெதுவான hooks உங்கள் பணிப்பாய்வை மெதுவாக்கும்
உங்கள் குழுவுடன் பகிரவும்: பயனுள்ள hooks-ஐ உங்கள் குழுவுடன் பகிரவும் (ஆனால் நினைவில் கொள்ளுங்கள்: hooks இயல்பாக பதிப்பாக்கப்படவில்லை)
தொடங்குபவர்களுக்கு: முதலில் எளிய hooks-உடன் தொடங்குங்கள், பின்னர் சிக்கலானவற்றுக்குச் செல்லுங்கள்
முக்கியமான குறிப்பு
Jassif Team குறிப்பு
Hooks சோதனைகள் அல்லது குறியீட்டு பகுப்பாய்வு போன்ற சரிபார்ப்புகளை தானியங்கி செய்யவும் குழு தரங்களை செயல்படுத்தவும் சக்திவாய்ந்தவை.
கிளையன்-பக்க hooks உங்கள் கணினியில் இயங்கும். சேவையக-பக்க hooks Git சேவையகத்தில் இயங்கும்.
Hooks உங்கள் வளர்ச்சி செயல்முறையை மேம்படுத்தவும் பிழைகளை விரைவில் கண்டறியவும் உதவுகின்றன.
விரைவு குறிப்பு
Hooks இடம்
களஞ்சியத்தில் hooks
.git/hooks/
Hook-ஐ இயக்கவும்
மாதிரியிலிருந்து இயக்கவும்
mv file.sample file
அனுமதிகள்
ஸ்கிரிப்டை இயக்கக்கூடியதாக ஆக்கவும்
chmod +x hookname
தனிப்பயன் ஸ்கிரிப்ட்
எந்த ஸ்கிரிப்டும் hook ஆக முடியும்
#!/bin/sh
echo "Custom hook"